#include "bi.h"

/* Devolvemos el puntero al texto */
Identificador busqueInserte(const char *texto)
{
	entrada *nueva;
	entrada *tmp;
	entrada *prev;
	int i;
	int largo;	
	
	unsigned long where = Hash ( texto );
	
	tmp = tabla[where];
	i=0;
	while ( tmp )
	{
		/* Guardamos la anterior para conectarla despues */
		/*printf("[busqueInserte] Iteracion %d\n", i);*/
		prev = tmp;

		if( strcmp( (tmp)->texto, texto ) == 0)
		{
			//printf("\n[busqueInserte] Texto \"%s\" encontrado ( Slot: [%ld] Node: [%d] )\n", texto,where,i);
			/* Aca debo hacr un break */
			return (Identificador)&tmp->texto;
		}
		else
		{
			/* printf("[busqueInserte] Texto \"%s\" != \"%s\" Veamos la siguiente\n", (tmp)->texto,texto ); */
			tmp = (tmp)->next;
			i++;
		}
	}	
	
	/*printf("[busqueInserte] Texto \"%s\" NO encontrado en la lista ( Slot: [%ld] ) \n", texto, where);*/
	//printf("\n[busqueInserte] Creando entrada para \"%s\" en la lista ( Slot: [%ld] Node: [%d] ) \n", texto, where,i);
	
	if ( i == 0 )
	{
    	largo = strlen(texto);
		tabla[where] = (entrada *)malloc( sizeof(entrada) );
		(tabla[where])->texto = (char *)malloc(sizeof(char)*(largo+1));
		strcpy ( (tabla[where])->texto , texto );
		(tabla[where])->next = NULL;
		return (Identificador)&tabla[where]->texto;
	}
	else
	{
    	largo = strlen(texto);
		tmp = (entrada *)malloc( sizeof(entrada) );
		(tmp)->texto = (char *)malloc(sizeof(char)*(largo+1));
		strcpy ( (tmp)->texto , texto );
		(tmp)->next = NULL;
		/* Conectamos la recien creada a la lista (solo si no es la primera)*/
		prev->next = tmp;
		return (Identificador)&tmp->texto;
	}
	
	
}
